package com.mmy.service;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mmy.controller.UtilConstants;
import com.mmy.service.car.impl.TCarBaseServiceImpl;
import com.mmy.service.car.impl.TCarOrderServiceImpl;
import com.mmy.service.car.impl.TCarPlanServiceImpl;
import com.mmy.service.group.impl.GroupEateryServiceImpl;
import com.mmy.service.group.impl.GroupHotelServiceImpl;
import com.mmy.service.group.impl.GroupLocalServiceImpl;
import com.mmy.service.group.impl.GroupNoticeServiceImpl;
import com.mmy.service.group.impl.GroupProjectServiceImpl;
import com.mmy.service.group.impl.GroupSceneryServiceImpl;
import com.mmy.service.group.impl.GroupSellServiceImpl;
import com.mmy.service.impl.bidtender.BidDetailedServiceImpl;
import com.mmy.service.impl.bidtender.BidInviteServiceImpl;
import com.mmy.service.impl.bidtender.BidTenderServiceImpl;
import com.mmy.service.impl.bidtender.BidTripServiceImpl;
import com.mmy.service.impl.constparameter.ConstParameterServiceImpl;
import com.mmy.service.impl.hotel.HotelOrderServiceImpl;
import com.mmy.service.impl.hotel.THotelBaseServiceImpl;
import com.mmy.service.impl.hotel.THotelPlanServiceImpl;
import com.mmy.service.impl.hotel.THotelRoomServiceImpl;
import com.mmy.service.impl.line.LineBaseServiceImpl;
import com.mmy.service.impl.line.LineOrderServiceImpl;
import com.mmy.service.impl.line.LinePlaceServiceImpl;
import com.mmy.service.impl.line.LinePlanServiceImpl;
import com.mmy.service.impl.line.LineTripServiceImpl;
import com.mmy.service.impl.restaurant.TRestaurantBaseServiceImpl;
import com.mmy.service.impl.restaurant.TRestaurantOrderServiceImpl;
import com.mmy.service.impl.restaurant.TRestaurantPlanServiceImpl;
import com.mmy.service.impl.sys.SysOrgServiceImpl;
import com.mmy.service.impl.sys.SysTogetherServiceImpl;
import com.mmy.service.impl.sys.SysUserServiceImpl;
import com.mmy.service.impl.visa.TVisaOrderServiceImpl;
import com.mmy.service.impl.visa.VisaBaseServiceImpl;
import com.mmy.service.permissionmenu.impl.UserPermissionServiceImpl;
import com.mmy.service.plane.impl.PlaneAirportServiceImpl;
import com.mmy.service.plane.impl.PlaneOrderServiceImpl;
import com.mmy.service.plane.impl.PlaneOrgServiceImpl;
import com.mmy.service.plane.impl.PlanePlanServiceImpl;
import com.mmy.service.plane.impl.TPlaneBaseServiceImpl;
import com.mmy.service.scenic.impl.ScenicBaseServiceImpl;
import com.mmy.service.scenic.impl.ScenicOrderServiceImpl;
import com.mmy.service.scenic.impl.ScenicPlanServiceImpl;
import com.mmy.service.ship.impl.TShipBaseServiceImpl;
import com.mmy.service.ship.impl.TShipOrderServiceImpl;
import com.mmy.service.ship.impl.TShipPlanServiceImpl;
import com.mmy.service.train.impl.TrainBaseServiceImpl;
import com.mmy.service.train.impl.TrainOrderServiceImpl;
import com.mmy.service.train.impl.TrainPlanServiceImpl;
import com.mmy.service.train.impl.TrainStationServiceImpl;

import lombok.extern.slf4j.Slf4j;

@Service
@Slf4j
public class ServiceCommon {

	@Autowired
	LinePlanServiceImpl implLinePlan;
	@Autowired
	TCarPlanServiceImpl implCarPlan;
	@Autowired
	THotelPlanServiceImpl implHotelPlan;
	@Autowired
	PlanePlanServiceImpl implPlanePlan;
	@Autowired
	TRestaurantPlanServiceImpl implRestaurantPlan;
	@Autowired
	ScenicPlanServiceImpl implScenicPlan;
	@Autowired
	TShipPlanServiceImpl implShipPlan;
	@Autowired
	TrainPlanServiceImpl implTrainPlan;
	@Autowired
	LineOrderServiceImpl implLineOrder;
	@Autowired
	TCarOrderServiceImpl implCarOrder;
	@Autowired
	HotelOrderServiceImpl implHotelOrder;
	@Autowired
	PlaneOrderServiceImpl implPlaneOrder;
	@Autowired
	TRestaurantOrderServiceImpl implRestaurantOrder;
	@Autowired
	ScenicOrderServiceImpl implScenicOrder;
	@Autowired
	TShipOrderServiceImpl implShipOrder;
	@Autowired
	TrainOrderServiceImpl implTrainOrder;
	@Autowired
	TrainStationServiceImpl implTrainStation;
	@Autowired
	TVisaOrderServiceImpl implVisaOrder;
	@Autowired
	UserPermissionServiceImpl implUserPermission;
	@Autowired
	VisaBaseServiceImpl implVisaBase;
	@Autowired
	TrainBaseServiceImpl implTrainBase;
	@Autowired
	TShipBaseServiceImpl implShipBase;
	@Autowired
	ScenicBaseServiceImpl implScenicBase;
	@Autowired
	TRestaurantBaseServiceImpl implRestaurantBase;
	@Autowired
	TPlaneBaseServiceImpl implPlaneBase;
	@Autowired
	THotelBaseServiceImpl implHotelBase;
	@Autowired
	THotelRoomServiceImpl implHotelRoom;
	@Autowired
	TCarBaseServiceImpl implCarBase;
	@Autowired
	BidInviteServiceImpl implBidInvite;
	@Autowired
	BidTenderServiceImpl implBidTender;
	@Autowired
	BidTripServiceImpl implBidTrip;
	@Autowired
	BidDetailedServiceImpl implBidDetailed;
	@Autowired
	ConstParameterServiceImpl implConstParameter;
	@Autowired
	SysUserServiceImpl implSysUser;
	@Autowired
	SysTogetherServiceImpl implSysTogether;
	@Autowired
	LineBaseServiceImpl implLineBase;
	@Autowired
	LineTripServiceImpl implLineTrip;
	@Autowired
	LinePlaceServiceImpl implLinePlace;
	@Autowired
	PlaneOrgServiceImpl implPlaneOrg;
	@Autowired
	PlaneAirportServiceImpl implPlaneAirport;
	@Autowired
	SysOrgServiceImpl implSysOrg;
	@Autowired
	GroupEateryServiceImpl implEatery;
	@Autowired
	GroupHotelServiceImpl implHotel;
	@Autowired
	GroupLocalServiceImpl implLocal;
	@Autowired
	GroupNoticeServiceImpl implNotice;
	@Autowired
	GroupProjectServiceImpl implProject;
	@Autowired
	GroupSceneryServiceImpl implScenery;
	@Autowired
	GroupSellServiceImpl implSell;

	public HashMap<String, Integer> getPage(String pageNumber, String pageSize, int iCount) {

		int iPageSize = 0;
		if (pageSize == null) {
			iPageSize = 20;
		} else {
			iPageSize = Integer.valueOf(pageSize);
		}

		// 页数
		int iPageNo = 0;
		if (pageNumber == null) {
			iPageNo = 1;
		} else {
			iPageNo = Integer.valueOf(pageNumber);

			if (iPageNo < 1) {
				iPageNo = 1;
			}
		}
		// 设置最大页数
		int iTotalCount = 0;

		if (iCount > 0) {
			iTotalCount = iCount;
		}

		int iMaxPage = iTotalCount % iPageSize == 0 ? iTotalCount / iPageSize : iTotalCount / iPageSize + 1;

		if (iPageNo > iMaxPage && iMaxPage != 0) {
			iPageNo = iMaxPage;
		} else if (iPageNo > iMaxPage && iMaxPage == 0) {
			iMaxPage = iPageNo;
		}
		// 分页查询条件
		int iTempPageNo = (iPageNo - 1) * iPageSize;
		HashMap<String, Integer> mapPage = new HashMap<String, Integer>();

		mapPage.put("iTempPageNo", iTempPageNo);
		mapPage.put("iPageSize", iPageSize);
		mapPage.put("iTotalCount", iTotalCount);
		mapPage.put("iMaxPage", iMaxPage);
		mapPage.put("iPageNo", iPageNo);

		return mapPage;
	}

	/**
	 * 生成基础编码 2位年码+6位数据码
	 * 
	 * @param 参数说明 表名常量
	 * @return 返回值说明 基础编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.17
	 */
	public int createBaseCode(String strTableName) {
		// 获得2位年码
		String strYear = getDate(UtilConstants.DateStyle.YYYY).substring(2);
		// 获得6位数据码
		// 获得最大编号
		int iCode = getMaxID(strTableName);
		// 最大编码顺番+1
		String strCode = String.valueOf(iCode);
		// 判断是否存在最大值，如果存在加1，如果不存在从1开始
		if (iCode == 0) {
			strCode = String.format("%06d", 1);
		} else {
			strCode = String.format("%06d", Integer.parseInt(strCode.substring(2)) + 1);
		}
		// 计划单编码 原 Dingxd
		// String strPlanCode = strYear + strCode;
		// return Integer.parseInt(strPlanCode);
		// 基础表编码 hanxl 2020.11.19
		String strBaseCode = strYear + strCode;
		return Integer.parseInt(strBaseCode);
	}

	/**
	 * 生成计划单编码 2位年码+6位数据码
	 * 
	 * @param 参数说明 表名常量
	 * @return 返回值说明 计划单编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.12
	 */
	public int createPlanCode(String strTableName) {
		// 获得2位年码
		String strYear = getDate(UtilConstants.DateStyle.YYYY).substring(2);
		// 获得6位数据码
		// 获得最大编号
		String strCode = getMaxCode(strTableName);
		log.info("获取的编号" + strCode);
		// 判断是否存在最大值，如果存在加1，如果不存在从1开始
		if (strCode == "") {
			strCode = String.format("%06d", 1);
		} else {
			
			strCode = String.format("%06d", Integer.parseInt(strCode.substring(2)) + 1);
		}
		// 计划单编码
		String strPlanCode = strYear + strCode;
		return Integer.parseInt(strPlanCode);
	}

	/**
	 * 获得指定表的最大编码
	 * 
	 * @param 参数说明 指定表的名常量
	 * @return 返回值说明 最大编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.14
	 */
	public String getMaxCode(String strTableName) {
		// 最大编号
		String strCode = "";
		// 按表名获得最大编码
		switch (strTableName) {
		case UtilConstants.TableName.T_LINE_PLAN:
			// 线路计划表
			strCode = implLinePlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_CAR_PLAN:
			// 车辆计划表
			strCode = implCarPlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_HOTEL_PLAN:
			// 酒店计划表
			strCode = implHotelPlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_PLANE_PLAN:
			// 航班时刻表
			strCode = implPlanePlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_RESTAURANT_PLAN:
			// 餐馆计划表
			strCode = implRestaurantPlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_SCENIC_PLAN:
			// 电子票计划表
			strCode = implScenicPlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_SHIP_PLAN:
			// 游轮航程表
			strCode = implShipPlan.getMaxPlanID();
			break;
		case UtilConstants.TableName.T_TRAIN_PLAN:
			// 列车时刻表
			strCode = implTrainPlan.getMaxPlanID();
			break;
		}
		return strCode;
	}

	/**
	 * 生成订单编码 计划单编码+8位年月日码+6位数据码
	 * 
	 * @param 参数说明 表名常量；计划单编码
	 * @return 返回值说明 订单编码
	 * @author 创建人 dingxd 
	 * @date 创建日期 2020.11.12
	 */
	public String createOrderCode(String strTableName, int iPlanCode) {
		// 获得8位年月日码
		String strDate = getDate(UtilConstants.DateStyle.YYYYMMDD);

		// 获得4位数据码
		// 获得最大编号
		String strCode = getMaxCode(strTableName, iPlanCode);
		// 判断是否存在最大值，如果存在加1，如果不存在从1开始
		if (strCode == "") {
			strCode = String.format("%06d", 1);
		} else {
			strCode = String.format("%06d", Integer.parseInt(strCode.substring(16)) + 1);
		}

		// 订单编码
		String strPlanCode = String.valueOf(iPlanCode) + strDate + strCode;
		return strPlanCode;
	}
	
	/**
	  * @descr 生成订单编号 线路ID+出发日期+计划ID
	  * @param 
	  * @return 
	  * @throws 
	  * @author liys
	  * @date 2021-6-3
	 */
	public String orderCode(String strTableName,int lineID,Date rDate, int iPlanCode) {
		
		String dateStr = rDate.toString().replaceAll("-","");
		String strPlanCode = String.valueOf(lineID) + dateStr + iPlanCode;
		return strPlanCode;
	}
	/**
	 * 获得指定表的最大编码
	 * 
	 * @param 参数说明 指定表的名常量，计划单编码
	 * @return 返回值说明 最大编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.14
	 */
	public String getMaxCode(String strTableName, int iPlanID) {
		// 最大编号
		String strCode = null;
		// 按表名获得最大编码
		switch (strTableName) {
		case UtilConstants.TableName.T_LINE_ORDER:
			// 线路订单表
			strCode = implLineOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_CAR_ORDER:
			// 车辆订单表
			strCode = implCarOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_HOTEL_ORDER:
			// 酒店订单表
			strCode = implHotelOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_PLANE_ORDER:
			// 机票订单表
			strCode = implPlaneOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_RESTAURANT_ORDER:
			// 餐馆订单表
			strCode = implRestaurantOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_SCENIC_ORDER:
			// 电子票订单表
			strCode = implScenicOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_SHIP_ORDER:
			// 船票订单表
			strCode = implShipOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_TRAIN_ORDER:
			// 专列订单表
			strCode = implTrainOrder.getMaxCode(iPlanID);
			break;
		case UtilConstants.TableName.T_VISA_ORDER:
			// 签证订单表
			strCode = implVisaOrder.getMaxCode(iPlanID);
			break;
		}
		return strCode;
	}

	/**
	 * 生成ID
	 * 
	 * @param 参数说明 表名常量
	 * @return 返回值说明 最大ID+1
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.16
	 */
	public int createMaxID(String strTableName) {
		// 获得最大ID
		int iID = getMaxID(strTableName);
		// 流水号+1
		iID = iID + 1;
		return iID;
	}

	/**
	 * 获得指定表的最大ID
	 * 
	 * @param 参数说明 指定表的名常量
	 * @return 返回值说明 最大ID
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.16
	 */
	public int getMaxID(String strTableName) {
		// 最大ID
		int iID = 0;
		// 按表名获得最大编码
		switch (strTableName) {
		case UtilConstants.TableName.T_LINE_ORDER:
			// 线路订单表
			iID = implLineOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_CAR_ORDER:
			// 车辆订单表
			iID = implCarOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_HOTEL_ORDER:
			// 酒店订单表
			iID = implHotelOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_PLANE_ORDER:
			// 机票订单表
			iID = implPlaneOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_RESTAURANT_ORDER:
			// 餐馆订单表
			iID = implRestaurantOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_SCENIC_ORDER:
			// 电子票订单表
			iID = implScenicOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_SHIP_ORDER:
			// 船票订单表
			iID = implShipOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_TRAIN_ORDER:
			// 专列订单表
			iID = implTrainOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_VISA_ORDER:
			// 签证订单表
			iID = implVisaOrder.getMaxID();
			break;
		case UtilConstants.TableName.T_SYS_USER_ROLE:
			// 用户权限对照表
			iID = implUserPermission.getMaxID();
			break;
		case UtilConstants.TableName.T_VISA_BASE:
			// 签证信息表
			iID = implVisaBase.getMaxVisaID();
			break;
		case UtilConstants.TableName.T_TRAIN_BASE:
			// 列车信息表
			iID = implTrainBase.getMaxTrainID();
			break;
		case UtilConstants.TableName.T_TRAIN_STATION:
			// 列车车站表
			iID = implTrainStation.getMaxStationID();
			break;
		case UtilConstants.TableName.T_SHIP_BASE:
			// 游轮信息表
			iID = implShipBase.getMaxShipID();
			break;
		case UtilConstants.TableName.T_SCENIC_BASE:
			// 景点信息表
			iID = implScenicBase.getMaxScenicID();
			break;
		case UtilConstants.TableName.T_RESTAURANT_BASE:
			// 餐馆信息表
			iID = implRestaurantBase.getMaxRestaurantID();
			break;
		case UtilConstants.TableName.T_PLANE_BASE:
			// 航班信息表
			iID = implPlaneBase.getMaxPlaneID();
			break;
		case UtilConstants.TableName.T_PLANE_ORG:
			// 航空公司信息表 hanxl 2021.03.17
			iID = implPlaneOrg.getMaxOrgID();
			break;
		case UtilConstants.TableName.T_PLANE_AIRPORT:
			// 机场信息表 hanxl 2021.03.17
			iID = implPlaneAirport.getMaxAirportID();
			break;
		case UtilConstants.TableName.T_HOTEL_BASE:
			// 酒店信息表
			iID = implHotelBase.getMaxHotelID();
			break;
		case UtilConstants.TableName.T_HOTEL_ROOM:
			// 酒店房间表
			iID = implHotelRoom.getMaxRoomID();
			break;
		case UtilConstants.TableName.T_CAR_BASE:
			// 车辆房间表
			iID = implCarBase.getMaxCarID();
			break;
		case UtilConstants.TableName.T_BID_INVITE:
			// 招标信息表 hanxl 2020.11.19
			iID = implBidInvite.getMaxInviteID();
			break;
		case UtilConstants.TableName.T_BID_TENDER:
			// 招标信息表 hanxl 2020.12.10
			iID = implBidTender.getMaxTenderID();
			break;
		case UtilConstants.TableName.T_BID_TRIP:
			// 招标行程信息表 hanxl 2020.12.10
			iID = implBidTrip.getMaxTripID();
			break;
		case UtilConstants.TableName.T_BID_DETAILED:
			// 招标明细信息表 hanxl 2020.12.10
			iID = implBidDetailed.getMaxDetailedID();
			break;
		case UtilConstants.TableName.T_Const_Parameter:
			// 招标明细信息表 hanxl 2020.12.10
			iID = implConstParameter.getMaxID();
			break;
		case UtilConstants.TableName.T_SYS_USER:
			// 用户信息表 hanxl 2021.01.20
			iID = implSysUser.getMaxUserID();
			break;
		case UtilConstants.TableName.T_SYS_TOGETHER:
			// 同行人信息表 hanxl 2021.01.20
			iID = implSysTogether.getMaxID();
			break;
		case UtilConstants.TableName.T_LINE_BASE:
			iID = implLineBase.getMaxLineID();
			break;
		case UtilConstants.TableName.T_LINE_TRIP:
			iID = implLineTrip.getMaxTripID();
			break;
		case UtilConstants.TableName.T_LINE_PLACE:
			iID = implLinePlace.getMaxPlaceID();
			break;
		case UtilConstants.TableName.T_SYS_ORG:
			iID = implSysOrg.getMaxOrgID();
			break;
		case UtilConstants.TableName.T_GROUP_EATERY:
			iID = implEatery.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_HOTEL:
			iID = implHotel.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_LOCAL:
			iID = implLocal.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_NOTICE:
			iID = implNotice.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_PROJECT:
			iID = implProject.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_SCENERY:
			iID = implScenery.getMaxID();
			break;
		case UtilConstants.TableName.T_GROUP_SELL:
			iID = implSell.getMaxID();
			break;
		}
		return iID;

	}

	/**
	 * 获得当前日期
	 * 
	 * @param 参数说明 指定日期样式
	 * @return 返回值说明 日期字符串
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.14
	 */
	public String getDate(String strDateStyle) {
		// 获得当前日期
		SimpleDateFormat sdf = new SimpleDateFormat(strDateStyle);
		return sdf.format(new Date());
	}

	/**
	 * 格式化日期
	 * 
	 * @param 参数说明 待处理日期
	 * @return 返回值说明 日期
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.14
	 */
	public Date formatDate(String strDate, String strDateStyle) {
		try {
			// 格式化日期
			SimpleDateFormat sdf = new SimpleDateFormat(strDateStyle);
			return sdf.parse(new String(strDate.replace("T", " ")));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 格式化日期
	 * 
	 * @param 参数说明 字符串日期 yyyy-MM-dd
	 * @return 返回值说明 date类日期
	 * @author 创建人 liys
	 * @date 创建日期 2021.01.29
	 */
	public Date changeDate(String strDate) {

		Calendar cal = Calendar.getInstance();
		String date = strDate.replace("-", "");
		Integer year = Integer.parseInt(date.substring(0, 4));
		Integer month = Integer.parseInt(date.substring(4, 6));
		Integer day = Integer.parseInt(date.substring(6, 8));
		cal.set(year, month - 1, day, 9, 9, 9);
		Date newDate = cal.getTime();
		return newDate;
	}

	/**
	 * 获得两个长日期相差时长（单位小时）
	 * 
	 * @param 参数说明 开始日期，结束日期
	 * @return 返回值说明 相差小时
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.164
	 */
	public BigDecimal getHourBetweenTwoDay(String strBeginDateTime, String strEndDateTime) {

		Date dBeginDate = formatDate(strBeginDateTime, UtilConstants.DateStyle.YYYY_MM_DD_HH_MM);
		Date dEndDate = formatDate(strEndDateTime, UtilConstants.DateStyle.YYYY_MM_DD_HH_MM);

		// 获取时长
		long fHour = dEndDate.getTime() - dBeginDate.getTime();
		// 天
		byte iDay = (byte) (fHour / (1000 * 60 * 60 * 24));
		// 时分
		long fHourMouth = (fHour - iDay * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60) + iDay * 24;

		if (fHourMouth < 0) {
			fHourMouth = fHourMouth * -1;
		}

		return new BigDecimal(fHourMouth);
	}

	/**
	 * 获得两个长日期相差时长
	 * 
	 * @param 参数说明 开始日期，结束日期
	 * @return 返回值说明 相差小时
	 * @author 创建人hanxl
	 * @date 创建日期 2021.03.17
	 */
	public BigDecimal getTimeBetweenTwoDay(String strBeginDateTime, String strEndDateTime) {

		Date dBeginDate = formatDate(strBeginDateTime, UtilConstants.DateStyle.YYYY_MM_DD_HH_MM_SS);
		Date dEndDate = formatDate(strEndDateTime, UtilConstants.DateStyle.YYYY_MM_DD_HH_MM_SS);

		// 获取时长 毫秒
		long fLong = dEndDate.getTime() - dBeginDate.getTime();
		// 将毫秒折合成小时
		int bHour = (int) (fLong / (1000 * 60 * 60));
		// 获得分钟
		long fMinute = (fLong - bHour * (1000 * 60 * 60)) / (1000 * 60);
		String strHourMouth = bHour + "." + fMinute;

		return new BigDecimal(strHourMouth);
	}

}
